package busco

// @schema_export --ident=schema --json --config=等级
// @schema_go
// @cache_go
// @cache_ts
// @alias 等级
type B等级 struct {
	// 统计功能所在主体
	// @alias 所在主体
	S所在主体 string `link:"主体"`

	// 功能的扩展配置
	// 用于识别所在功能，获取指定功能数据时使用
	// 卡包可以不用设置
	// @alias 功能
	G功能 string `link:"功能"`
	// @alias 标识
	B标识 string
	// @alias 标旗
	B标旗 map[D等级标旗]bool
	// 初始化时执行
	// @alias 初始执行
	C初始执行 string `link:"执行"`
	// @alias 初始值
	C初始值 int
	// @alias 最大值
	Z最大值 int
	// @alias 升级奖励
	S升级奖励 string `link:"奖励"`
	// 默认的升级执行
	// @alias 升级执行
	S升级执行 string `link:"执行"`
	// 如果每个等级的信息都不样，可指定【等级信息】
	// 如果升级功能比较简单，直接设置【等级信息】
	// 如果升级功能比较复杂，可通过增加修正默认设置实现
	// @alias 等级信息
	D等级信息 map[string]*S等级信息

	// @alias 特定等级信息
	D特定等级信息 map[string]*S特定等级信息
}

type S特定等级信息 struct {
	// @alias 等级
	D等级 int
	// @alias 名称
	M名称 string
	// @alias 描述
	M描述 string
	// @alias 升级奖励
	S升级奖励 string `link:"奖励"`
	// 默认的升级执行
	// @alias 升级执行
	S升级执行 string `link:"执行"`
	// @alias 装备修正
	Z装备修正 interface{} `_type:"主体修正项"`
}

type S等级信息 struct {
	// @alias 名称
	M名称 string
	// @alias 描述
	M描述 string
	// 需要的经验
	// @alias 升级经验
	S升级经验 int
	// @alias 升级奖励
	S升级奖励 string `link:"奖励"`
	// 设置基础属性
	// @alias 设置属性
	S设置属性 map[string]*S等级信息_修正属性项
}

type S等级信息_修正属性项 struct {

	// @alias 属性
	S属性 string `_type:"扩展属性"`

	// @alias 值
	Z值 float64
}

// @schema_export --ident=schema --json
// @schema_go
// @alias 等级标旗
type D等级标旗 int

const (
	D等级标旗_禁止自动升级 D等级标旗 = iota
	D等级标旗_升级后经验置零
	D等级标旗_升级后更新主体属性
)
